#DSC 配置
本页介绍 Windows PowerShell DSC 中配置的编写、编译与应用流程。示例以 Windows PowerShell 5.1 为准。
#Configuration 块
Configuration 块是声明配置的入口,语法与函数类似,可以接收参数:
Demo.ps1
Configuration Demo {
param(
[string]$ComputerName = 'localhost'
)
Node $ComputerName {
File SiteConfig {
DestinationPath = 'C:\App\config.json'
Contents = '{"mode":"prod"}'
Type = 'File'
Ensure = 'Present'
}
}
}
Configuration定义配置名称,调用时会把结果编译为 MOF。param块用于传入目标节点、路径等参数。Node指定目标节点,可以写主机名、localhost或一个列表。- 块内只能使用 DSC 资源和少量控制语句。
#File
File 用于管理文件和目录:
File AppConfig {
DestinationPath = 'C:\App\app.json'
SourcePath = '\\fileserver\share\app.json'
Ensure = 'Present'
}
Type取File或Directory。Ensure取Present或Absent。- 使用
Contents直接写入内容,使用SourcePath从源路径复制。
#Script
Script 用于封装无法用现成资源表达的逻辑,需要提供三个脚本块:
Script EnsureLogs {
GetScript = {
@{ Result = (Test-Path 'C:\App\logs') }
}
TestScript = {
Test-Path 'C:\App\logs'
}
SetScript = {
New-Item -ItemType Directory -Path 'C:\App\logs' -Force | Out-Null
}
}
TestScript返回$true表示已处于目标状态。SetScript只在TestScript返回$false时执行。
#编译为 MOF
定义配置后,调用配置名称即可编译。-OutputPath 指定输出目录,每个节点生成一个 .mof 文件:
> . .\Demo.ps1
> Demo -OutputPath .\out
#应用配置
使用 Start-DscConfiguration 把 MOF 推送到目标节点:
> Start-DscConfiguration -Path .\out -Wait -Verbose
-Wait等待应用完成后再返回;省略时命令立即返回,需要查看作业状态。
#LCM 简介
本地配置管理器(Local Configuration Manager,LCM)是目标节点上负责执行配置的引擎。它读取 MOF、调用资源、检查状态,并按配置的周期重复应用。
运行 Get-DscLocalConfigurationManager 可以查看当前设置。LCM 的模式、刷新间隔、配置仓库等由元配置(meta configuration)设置,推模式下通常使用默认值即可。